/*
 * Allwinner sun50iw9p1 SoCs clk driver.
 *
 * Copyright(c) 2012-2016 Allwinnertech Co., Ltd.
 * Author: huafenghuang <huafenghuang@allwinnertech.com>
 *
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/* the clk table is not right ,please fix me when ic come back */

#include "clk-sun50iw9.h"
struct sunxi_clk_factor_freq factor_pllcpu_tbl[] = {
PLLCPU(11,	0,	2,	72000000U),
PLLCPU(12,	0,	2,	78000000U),
PLLCPU(13,	0,	2,	84000000U),
PLLCPU(14,	0,	2,	90000000U),
PLLCPU(15,	0,	2,	96000000U),
PLLCPU(16,	0,	2,	102000000U),
PLLCPU(17,	0,	2,	108000000U),
PLLCPU(18,	0,	2,	114000000U),
PLLCPU(19,	0,	2,	120000000U),
PLLCPU(20,	0,	2,	126000000U),
PLLCPU(21,	0,	2,	132000000U),
PLLCPU(22,	0,	2,	138000000U),
PLLCPU(23,	0,	2,	144000000U),
PLLCPU(24,	0,	2,	150000000U),
PLLCPU(25,	0,	2,	156000000U),
PLLCPU(26,	0,	2,	162000000U),
PLLCPU(13,	0,	1,	168000000U),
PLLCPU(28,	0,	2,	174000000U),
PLLCPU(14,	0,	1,	180000000U),
PLLCPU(30,	0,	2,	186000000U),
PLLCPU(15,	0,	1,	192000000U),
PLLCPU(32,	0,	2,	198000000U),
PLLCPU(16,	0,	1,	204000000U),
PLLCPU(34,	0,	2,	210000000U),
PLLCPU(17,	0,	1,	216000000U),
PLLCPU(36,	0,	2,	222000000U),
PLLCPU(18,	0,	1,	228000000U),
PLLCPU(38,	0,	2,	234000000U),
PLLCPU(19,	0,	1,	240000000U),
PLLCPU(40,	0,	2,	246000000U),
PLLCPU(20,	0,	1,	252000000U),
PLLCPU(42,	0,	2,	258000000U),
PLLCPU(21,	0,	1,	264000000U),
PLLCPU(44,	0,	2,	270000000U),
PLLCPU(22,	0,	1,	276000000U),
PLLCPU(46,	0,	2,	282000000U),
PLLCPU(11,	0,	0,	288000000U),
PLLCPU(48,	0,	2,	294000000U),
PLLCPU(24,	0,	1,	300000000U),
PLLCPU(50,	0,	2,	306000000U),
PLLCPU(12,	0,	0,	312000000U),
PLLCPU(52,	0,	2,	318000000U),
PLLCPU(26,	0,	1,	324000000U),
PLLCPU(54,	0,	2,	330000000U),
PLLCPU(13,	0,	0,	336000000U),
PLLCPU(56,	0,	2,	342000000U),
PLLCPU(28,	0,	1,	348000000U),
PLLCPU(58,	0,	2,	354000000U),
PLLCPU(14,	0,	0,	360000000U),
PLLCPU(60,	0,	2,	366000000U),
PLLCPU(30,	0,	1,	372000000U),
PLLCPU(62,	0,	2,	378000000U),
PLLCPU(15,	0,	0,	384000000U),
PLLCPU(64,	0,	2,	390000000U),
PLLCPU(32,	0,	1,	396000000U),
PLLCPU(66,	0,	2,	402000000U),
PLLCPU(16,	0,	0,	408000000U),
PLLCPU(68,	0,	2,	414000000U),
PLLCPU(34,	0,	1,	420000000U),
PLLCPU(70,	0,	2,	426000000U),
PLLCPU(17,	0,	0,	432000000U),
PLLCPU(72,	0,	2,	438000000U),
PLLCPU(36,	0,	1,	444000000U),
PLLCPU(74,	0,	2,	450000000U),
PLLCPU(18,	0,	0,	456000000U),
PLLCPU(76,	0,	2,	462000000U),
PLLCPU(38,	0,	1,	468000000U),
PLLCPU(78,	0,	2,	474000000U),
PLLCPU(19,	0,	0,	480000000U),
PLLCPU(80,	0,	2,	486000000U),
PLLCPU(40,	0,	1,	492000000U),
PLLCPU(82,	0,	2,	498000000U),
PLLCPU(20,	0,	0,	504000000U),
PLLCPU(84,	0,	2,	510000000U),
PLLCPU(42,	0,	1,	516000000U),
PLLCPU(86,	0,	2,	522000000U),
PLLCPU(21,	0,	0,	528000000U),
PLLCPU(88,	0,	2,	534000000U),
PLLCPU(44,	0,	1,	540000000U),
PLLCPU(90,	0,	2,	546000000U),
PLLCPU(22,	0,	0,	552000000U),
PLLCPU(92,	0,	2,	558000000U),
PLLCPU(46,	0,	1,	564000000U),
PLLCPU(94,	0,	2,	570000000U),
PLLCPU(23,	0,	0,	576000000U),
PLLCPU(96,	0,	2,	582000000U),
PLLCPU(48,	0,	1,	588000000U),
PLLCPU(98,	0,	2,	594000000U),
PLLCPU(24,	0,	0,	600000000U),
PLLCPU(100,	0,	2,	606000000U),
PLLCPU(50,	0,	1,	612000000U),
PLLCPU(102,	0,	2,	618000000U),
PLLCPU(25,	0,	0,	624000000U),
PLLCPU(104,	0,	2,	630000000U),
PLLCPU(52,	0,	1,	636000000U),
PLLCPU(106,	0,	2,	642000000U),
PLLCPU(26,	0,	0,	648000000U),
PLLCPU(108,	0,	2,	654000000U),
PLLCPU(54,	0,	1,	660000000U),
PLLCPU(110,	0,	2,	666000000U),
PLLCPU(27,	0,	0,	672000000U),
PLLCPU(112,	0,	2,	678000000U),
PLLCPU(56,	0,	1,	684000000U),
PLLCPU(114,	0,	2,	690000000U),
PLLCPU(28,	0,	0,	696000000U),
PLLCPU(116,	0,	2,	702000000U),
PLLCPU(58,	0,	1,	708000000U),
PLLCPU(118,	0,	2,	714000000U),
PLLCPU(29,	0,	0,	720000000U),
PLLCPU(120,	0,	2,	726000000U),
PLLCPU(60,	0,	1,	732000000U),
PLLCPU(122,	0,	2,	738000000U),
PLLCPU(30,	0,	0,	744000000U),
PLLCPU(124,	0,	2,	750000000U),
PLLCPU(62,	0,	1,	756000000U),
PLLCPU(126,	0,	2,	762000000U),
PLLCPU(31,	0,	0,	768000000U),
PLLCPU(128,	0,	2,	774000000U),
PLLCPU(64,	0,	1,	780000000U),
PLLCPU(130,	0,	2,	786000000U),
PLLCPU(32,	0,	0,	792000000U),
PLLCPU(132,	0,	2,	798000000U),
PLLCPU(66,	0,	1,	804000000U),
PLLCPU(134,	0,	2,	810000000U),
PLLCPU(33,	0,	0,	816000000U),
PLLCPU(136,	0,	2,	822000000U),
PLLCPU(68,	0,	1,	828000000U),
PLLCPU(138,	0,	2,	834000000U),
PLLCPU(34,	0,	0,	840000000U),
PLLCPU(140,	0,	2,	846000000U),
PLLCPU(70,	0,	1,	852000000U),
PLLCPU(142,	0,	2,	858000000U),
PLLCPU(35,	0,	0,	864000000U),
PLLCPU(144,	0,	2,	870000000U),
PLLCPU(72,	0,	1,	876000000U),
PLLCPU(146,	0,	2,	882000000U),
PLLCPU(36,	0,	0,	888000000U),
PLLCPU(148,	0,	2,	894000000U),
PLLCPU(74,	0,	1,	900000000U),
PLLCPU(150,	0,	2,	906000000U),
PLLCPU(37,	0,	0,	912000000U),
PLLCPU(152,	0,	2,	918000000U),
PLLCPU(76,	0,	1,	924000000U),
PLLCPU(154,	0,	2,	930000000U),
PLLCPU(38,	0,	0,	936000000U),
PLLCPU(156,	0,	2,	942000000U),
PLLCPU(78,	0,	1,	948000000U),
PLLCPU(158,	0,	2,	954000000U),
PLLCPU(39,	0,	0,	960000000U),
PLLCPU(160,	0,	2,	966000000U),
PLLCPU(80,	0,	1,	972000000U),
PLLCPU(162,	0,	2,	978000000U),
PLLCPU(40,	0,	0,	984000000U),
PLLCPU(164,	0,	2,	990000000U),
PLLCPU(82,	0,	1,	996000000U),
PLLCPU(166,	0,	2,	1002000000U),
PLLCPU(41,	0,	0,	1008000000U),
PLLCPU(168,	0,	2,	1014000000U),
PLLCPU(84,	0,	1,	1020000000U),
PLLCPU(170,	0,	2,	1026000000U),
PLLCPU(42,	0,	0,	1032000000U),
PLLCPU(172,	0,	2,	1038000000U),
PLLCPU(86,	0,	1,	1044000000U),
PLLCPU(174,	0,	2,	1050000000U),
PLLCPU(43,	0,	0,	1056000000U),
PLLCPU(176,	0,	2,	1062000000U),
PLLCPU(88,	0,	1,	1068000000U),
PLLCPU(178,	0,	2,	1074000000U),
PLLCPU(44,	0,	0,	1080000000U),
PLLCPU(180,	0,	2,	1086000000U),
PLLCPU(90,	0,	1,	1092000000U),
PLLCPU(182,	0,	2,	1098000000U),
PLLCPU(45,	0,	0,	1104000000U),
PLLCPU(184,	0,	2,	1110000000U),
PLLCPU(92,	0,	1,	1116000000U),
PLLCPU(186,	0,	2,	1122000000U),
PLLCPU(46,	0,	0,	1128000000U),
PLLCPU(188,	0,	2,	1134000000U),
PLLCPU(94,	0,	1,	1140000000U),
PLLCPU(190,	0,	2,	1146000000U),
PLLCPU(47,	0,	0,	1152000000U),
PLLCPU(192,	0,	2,	1158000000U),
PLLCPU(96,	0,	1,	1164000000U),
PLLCPU(194,	0,	2,	1170000000U),
PLLCPU(48,	0,	0,	1176000000U),
PLLCPU(196,	0,	2,	1182000000U),
PLLCPU(98,	0,	1,	1188000000U),
PLLCPU(198,	0,	2,	1194000000U),
PLLCPU(49,	0,	0,	1200000000U),
PLLCPU(200,	0,	2,	1206000000U),
PLLCPU(100,	0,	1,	1212000000U),
PLLCPU(202,	0,	2,	1218000000U),
PLLCPU(50,	0,	0,	1224000000U),
PLLCPU(204,	0,	2,	1230000000U),
PLLCPU(102,	0,	1,	1236000000U),
PLLCPU(206,	0,	2,	1242000000U),
PLLCPU(51,	0,	0,	1248000000U),
PLLCPU(208,	0,	2,	1254000000U),
PLLCPU(104,	0,	1,	1260000000U),
PLLCPU(52,	0,	0,	1272000000U),
PLLCPU(106,	0,	1,	1284000000U),
PLLCPU(53,	0,	0,	1296000000U),
PLLCPU(108,	0,	1,	1308000000U),
PLLCPU(54,	0,	0,	1320000000U),
PLLCPU(110,	0,	1,	1332000000U),
PLLCPU(55,	0,	0,	1344000000U),
PLLCPU(112,	0,	1,	1356000000U),
PLLCPU(56,	0,	0,	1368000000U),
PLLCPU(114,	0,	1,	1380000000U),
PLLCPU(57,	0,	0,	1392000000U),
PLLCPU(116,	0,	1,	1404000000U),
PLLCPU(58,	0,	0,	1416000000U),
PLLCPU(118,	0,	1,	1428000000U),
PLLCPU(59,	0,	0,	1440000000U),
PLLCPU(120,	0,	1,	1452000000U),
PLLCPU(60,	0,	0,	1464000000U),
PLLCPU(122,	0,	1,	1476000000U),
PLLCPU(61,	0,	0,	1488000000U),
PLLCPU(124,	0,	1,	1500000000U),
PLLCPU(62,	0,	0,	1512000000U),
PLLCPU(126,	0,	1,	1524000000U),
PLLCPU(63,	0,	0,	1536000000U),
PLLCPU(128,	0,	1,	1548000000U),
PLLCPU(64,	0,	0,	1560000000U),
PLLCPU(130,	0,	1,	1572000000U),
PLLCPU(65,	0,	0,	1584000000U),
PLLCPU(132,	0,	1,	1596000000U),
PLLCPU(66,	0,	0,	1608000000U),
PLLCPU(134,	0,	1,	1620000000U),
PLLCPU(67,	0,	0,	1632000000U),
PLLCPU(136,	0,	1,	1644000000U),
PLLCPU(68,	0,	0,	1656000000U),
PLLCPU(138,	0,	1,	1668000000U),
PLLCPU(69,	0,	0,	1680000000U),
PLLCPU(140,	0,	1,	1692000000U),
PLLCPU(70,	0,	0,	1704000000U),
PLLCPU(142,	0,	1,	1716000000U),
PLLCPU(71,	0,	0,	1728000000U),
PLLCPU(144,	0,	1,	1740000000U),
PLLCPU(72,	0,	0,	1752000000U),
PLLCPU(146,	0,	1,	1764000000U),
PLLCPU(73,	0,	0,	1776000000U),
PLLCPU(148,	0,	1,	1788000000U),
PLLCPU(74,	0,	0,	1800000000U),
PLLCPU(150,	0,	1,	1812000000U),
PLLCPU(75,	0,	0,	1824000000U),
PLLCPU(152,	0,	1,	1836000000U),
PLLCPU(76,	0,	0,	1848000000U),
PLLCPU(154,	0,	1,	1860000000U),
PLLCPU(77,	0,	0,	1872000000U),
PLLCPU(156,	0,	1,	1884000000U),
PLLCPU(78,	0,	0,	1896000000U),
PLLCPU(158,	0,	1,	1908000000U),
PLLCPU(79,	0,	0,	1920000000U),
PLLCPU(160,	0,	1,	1932000000U),
PLLCPU(80,	0,	0,	1944000000U),
PLLCPU(162,	0,	1,	1956000000U),
PLLCPU(81,	0,	0,	1968000000U),
PLLCPU(164,	0,	1,	1980000000U),
PLLCPU(82,	0,	0,	1992000000U),
PLLCPU(166,	0,	1,	2004000000U),
PLLCPU(83,	0,	0,	2016000000U),
PLLCPU(168,	0,	1,	2028000000U),
PLLCPU(84,	0,	0,	2040000000U),
PLLCPU(170,	0,	1,	2052000000U),
PLLCPU(85,	0,	0,	2064000000U),
PLLCPU(172,	0,	1,	2076000000U),
PLLCPU(86,	0,	0,	2088000000U),
PLLCPU(174,	0,	1,	2100000000U),
PLLCPU(87,	0,	0,	2112000000U),
PLLCPU(176,	0,	1,	2124000000U),
PLLCPU(88,	0,	0,	2136000000U),
PLLCPU(178,	0,	1,	2148000000U),
PLLCPU(89,	0,	0,	2160000000U),
PLLCPU(180,	0,	1,	2172000000U),
PLLCPU(90,	0,	0,	2184000000U),
PLLCPU(182,	0,	1,	2196000000U),
PLLCPU(91,	0,	0,	2208000000U),
PLLCPU(184,	0,	1,	2220000000U),
PLLCPU(92,	0,	0,	2232000000U),
PLLCPU(186,	0,	1,	2244000000U),
PLLCPU(93,	0,	0,	2256000000U),
PLLCPU(188,	0,	1,	2268000000U),
PLLCPU(94,	0,	0,	2280000000U),
PLLCPU(190,	0,	1,	2292000000U),
PLLCPU(95,	0,	0,	2304000000U),
PLLCPU(192,	0,	1,	2316000000U),
PLLCPU(96,	0,	0,	2328000000U),
PLLCPU(194,	0,	1,	2340000000U),
PLLCPU(97,	0,	0,	2352000000U),
PLLCPU(196,	0,	1,	2364000000U),
PLLCPU(98,	0,	0,	2376000000U),
PLLCPU(198,	0,	1,	2388000000U),
PLLCPU(99,	0,	0,	2400000000U),
PLLCPU(200,	0,	1,	2412000000U),
PLLCPU(100,	0,	0,	2424000000U),
PLLCPU(202,	0,	1,	2436000000U),
PLLCPU(101,	0,	0,	2448000000U),
PLLCPU(204,	0,	1,	2460000000U),
PLLCPU(102,	0,	0,	2472000000U),
PLLCPU(206,	0,	1,	2484000000U),
PLLCPU(103,	0,	0,	2496000000U),
PLLCPU(208,	0,	1,	2508000000U),
PLLCPU(104,	0,	0,	2520000000U),
};

/* PLLDDR0(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
/* d1==m1,d2==m0 */
struct sunxi_clk_factor_freq factor_pllddr0_tbl[] = {
PLLDDR0(27,	0,	0,	672000000U),
};

/* PLLDDR1(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllddr1_tbl[] = {
PLLDDR1(32,	0,	0,	792000000U),
};

/* PLLPERIPH0(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllperiph0_tbl[] = {
PLLPERIPH0(49,	0,	0,	600000000U),
};

/* PLLPERIPH1(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllperiph1_tbl[] = {
PLLPERIPH1(49,	0,	0,	600000000U),
};

/* PLLGPU(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllgpu_tbl[] = {
PLLGPU(24,	0,	0,	600000000U),
};

/* PLLVIDEO1(n, d1, freq)	F_N8X8_D1V1X1 */
/*use for video1 and video2 */
struct sunxi_clk_factor_freq factor_pllvideo1_tbl[] = {
PLLVIDEO1(23,	1,	72000000U),
PLLVIDEO1(24,	1,	75000000U),
PLLVIDEO1(25,	1,	78000000U),
PLLVIDEO1(26,	1,	81000000U),
PLLVIDEO1(27,	1,	84000000U),
PLLVIDEO1(28,	1,	87000000U),
PLLVIDEO1(29,	1,	90000000U),
PLLVIDEO1(30,	1,	93000000U),
PLLVIDEO1(31,	1,	96000000U),
PLLVIDEO1(32,	1,	99000000U),
PLLVIDEO1(33,	1,	102000000U),
PLLVIDEO1(34,	1,	105000000U),
PLLVIDEO1(35,	1,	108000000U),
PLLVIDEO1(36,	1,	111000000U),
PLLVIDEO1(18,	0,	114000000U),
PLLVIDEO1(38,	1,	117000000U),
PLLVIDEO1(19,	0,	120000000U),
PLLVIDEO1(40,	1,	123000000U),
PLLVIDEO1(20,	0,	126000000U),
PLLVIDEO1(42,	1,	129000000U),
PLLVIDEO1(21,	0,	132000000U),
PLLVIDEO1(44,	1,	135000000U),
PLLVIDEO1(22,	0,	138000000U),
PLLVIDEO1(46,	1,	141000000U),
PLLVIDEO1(23,	0,	144000000U),
PLLVIDEO1(48,	1,	147000000U),
PLLVIDEO1(24,	0,	150000000U),
PLLVIDEO1(50,	1,	153000000U),
PLLVIDEO1(25,	0,	156000000U),
PLLVIDEO1(52,	1,	159000000U),
PLLVIDEO1(26,	0,	162000000U),
PLLVIDEO1(54,	1,	165000000U),
PLLVIDEO1(27,	0,	168000000U),
PLLVIDEO1(56,	1,	171000000U),
PLLVIDEO1(28,	0,	174000000U),
PLLVIDEO1(58,	1,	177000000U),
PLLVIDEO1(29,	0,	180000000U),
PLLVIDEO1(60,	1,	183000000U),
PLLVIDEO1(30,	0,	186000000U),
PLLVIDEO1(62,	1,	189000000U),
PLLVIDEO1(31,	0,	192000000U),
PLLVIDEO1(64,	1,	195000000U),
PLLVIDEO1(32,	0,	198000000U),
PLLVIDEO1(66,	1,	201000000U),
PLLVIDEO1(33,	0,	204000000U),
PLLVIDEO1(68,	1,	207000000U),
PLLVIDEO1(34,	0,	210000000U),
PLLVIDEO1(70,	1,	213000000U),
PLLVIDEO1(35,	0,	216000000U),
PLLVIDEO1(72,	1,	219000000U),
PLLVIDEO1(36,	0,	222000000U),
PLLVIDEO1(74,	1,	225000000U),
PLLVIDEO1(37,	0,	228000000U),
PLLVIDEO1(76,	1,	231000000U),
PLLVIDEO1(38,	0,	234000000U),
PLLVIDEO1(78,	1,	237000000U),
PLLVIDEO1(39,	0,	240000000U),
PLLVIDEO1(80,	1,	243000000U),
PLLVIDEO1(40,	0,	246000000U),
PLLVIDEO1(82,	1,	249000000U),
PLLVIDEO1(41,	0,	252000000U),
PLLVIDEO1(84,	1,	255000000U),
PLLVIDEO1(42,	0,	258000000U),
PLLVIDEO1(86,	1,	261000000U),
PLLVIDEO1(43,	0,	264000000U),
PLLVIDEO1(88,	1,	267000000U),
PLLVIDEO1(44,	0,	270000000U),
PLLVIDEO1(90,	1,	273000000U),
PLLVIDEO1(45,	0,	276000000U),
PLLVIDEO1(92,	1,	279000000U),
PLLVIDEO1(46,	0,	282000000U),
PLLVIDEO1(94,	1,	285000000U),
PLLVIDEO1(47,	0,	288000000U),
PLLVIDEO1(96,	1,	291000000U),
PLLVIDEO1(48,	0,	294000000U),
PLLVIDEO1(98,	1,	297000000U),
PLLVIDEO1(49,	0,	300000000U),
PLLVIDEO1(100,	1,	303000000U),
PLLVIDEO1(50,	0,	306000000U),
PLLVIDEO1(102,	1,	309000000U),
PLLVIDEO1(51,	0,	312000000U),
PLLVIDEO1(104,	1,	315000000U),
PLLVIDEO1(52,	0,	318000000U),
PLLVIDEO1(106,	1,	321000000U),
PLLVIDEO1(53,	0,	324000000U),
PLLVIDEO1(108,	1,	327000000U),
PLLVIDEO1(54,	0,	330000000U),
PLLVIDEO1(110,	1,	333000000U),
PLLVIDEO1(55,	0,	336000000U),
PLLVIDEO1(112,	1,	339000000U),
PLLVIDEO1(56,	0,	342000000U),
PLLVIDEO1(114,	1,	345000000U),
PLLVIDEO1(57,	0,	348000000U),
PLLVIDEO1(116,	1,	351000000U),
PLLVIDEO1(58,	0,	354000000U),
PLLVIDEO1(118,	1,	357000000U),
PLLVIDEO1(59,	0,	360000000U),
PLLVIDEO1(120,	1,	363000000U),
PLLVIDEO1(60,	0,	366000000U),
PLLVIDEO1(122,	1,	369000000U),
PLLVIDEO1(61,	0,	372000000U),
PLLVIDEO1(124,	1,	375000000U),
PLLVIDEO1(62,	0,	378000000U),
PLLVIDEO1(126,	1,	381000000U),
PLLVIDEO1(63,	0,	384000000U),
PLLVIDEO1(128,	1,	387000000U),
PLLVIDEO1(64,	0,	390000000U),
PLLVIDEO1(130,	1,	393000000U),
PLLVIDEO1(65,	0,	396000000U),
PLLVIDEO1(132,	1,	399000000U),
PLLVIDEO1(66,	0,	402000000U),
PLLVIDEO1(134,	1,	405000000U),
PLLVIDEO1(67,	0,	408000000U),
PLLVIDEO1(136,	1,	411000000U),
PLLVIDEO1(68,	0,	414000000U),
PLLVIDEO1(138,	1,	417000000U),
PLLVIDEO1(69,	0,	420000000U),
PLLVIDEO1(140,	1,	423000000U),
PLLVIDEO1(70,	0,	426000000U),
PLLVIDEO1(142,	1,	429000000U),
PLLVIDEO1(71,	0,	432000000U),
PLLVIDEO1(144,	1,	435000000U),
PLLVIDEO1(72,	0,	438000000U),
PLLVIDEO1(146,	1,	441000000U),
PLLVIDEO1(73,	0,	444000000U),
PLLVIDEO1(148,	1,	447000000U),
PLLVIDEO1(74,	0,	450000000U),
PLLVIDEO1(150,	1,	453000000U),
PLLVIDEO1(75,	0,	456000000U),
PLLVIDEO1(152,	1,	459000000U),
PLLVIDEO1(76,	0,	462000000U),
PLLVIDEO1(154,	1,	465000000U),
PLLVIDEO1(77,	0,	468000000U),
PLLVIDEO1(156,	1,	471000000U),
PLLVIDEO1(78,	0,	474000000U),
PLLVIDEO1(158,	1,	477000000U),
PLLVIDEO1(79,	0,	480000000U),
PLLVIDEO1(160,	1,	483000000U),
PLLVIDEO1(80,	0,	486000000U),
PLLVIDEO1(162,	1,	489000000U),
PLLVIDEO1(81,	0,	492000000U),
PLLVIDEO1(164,	1,	495000000U),
PLLVIDEO1(82,	0,	498000000U),
PLLVIDEO1(166,	1,	501000000U),
PLLVIDEO1(83,	0,	504000000U),
PLLVIDEO1(168,	1,	507000000U),
PLLVIDEO1(84,	0,	510000000U),
PLLVIDEO1(170,	1,	513000000U),
PLLVIDEO1(85,	0,	516000000U),
PLLVIDEO1(172,	1,	519000000U),
PLLVIDEO1(86,	0,	522000000U),
PLLVIDEO1(174,	1,	525000000U),
PLLVIDEO1(87,	0,	528000000U),
PLLVIDEO1(176,	1,	531000000U),
PLLVIDEO1(88,	0,	534000000U),
PLLVIDEO1(178,	1,	537000000U),
PLLVIDEO1(89,	0,	540000000U),
PLLVIDEO1(180,	1,	543000000U),
PLLVIDEO1(90,	0,	546000000U),
PLLVIDEO1(182,	1,	549000000U),
PLLVIDEO1(91,	0,	552000000U),
PLLVIDEO1(184,	1,	555000000U),
PLLVIDEO1(92,	0,	558000000U),
PLLVIDEO1(186,	1,	561000000U),
PLLVIDEO1(93,	0,	564000000U),
PLLVIDEO1(188,	1,	567000000U),
PLLVIDEO1(94,	0,	570000000U),
PLLVIDEO1(190,	1,	573000000U),
PLLVIDEO1(95,	0,	576000000U),
PLLVIDEO1(192,	1,	579000000U),
PLLVIDEO1(96,	0,	582000000U),
PLLVIDEO1(194,	1,	585000000U),
PLLVIDEO1(97,	0,	588000000U),
PLLVIDEO1(196,	1,	591000000U),
PLLVIDEO1(98,	0,	594000000U),
PLLVIDEO1(198,	1,	597000000U),
PLLVIDEO1(99,	0,	600000000U),
PLLVIDEO1(200,	1,	603000000U),
PLLVIDEO1(100,	0,	606000000U),
PLLVIDEO1(202,	1,	609000000U),
PLLVIDEO1(101,	0,	612000000U),
PLLVIDEO1(204,	1,	615000000U),
PLLVIDEO1(102,	0,	618000000U),
PLLVIDEO1(206,	1,	621000000U),
PLLVIDEO1(103,	0,	624000000U),
PLLVIDEO1(208,	1,	627000000U),
PLLVIDEO1(104,	0,	630000000U),
};

/* PLLVIDEO0(n, d1, freq)	F_N8X8_D1V1X1 */
struct sunxi_clk_factor_freq factor_pllvideo0x4_tbl[] = {
PLLVIDEO0(23,	1,	288000000U),
PLLVIDEO0(24,	1,	300000000U),
PLLVIDEO0(25,	1,	312000000U),
PLLVIDEO0(26,	1,	324000000U),
PLLVIDEO0(27,	1,	336000000U),
PLLVIDEO0(28,	1,	348000000U),
PLLVIDEO0(29,	1,	360000000U),
PLLVIDEO0(30,	1,	372000000U),
PLLVIDEO0(31,	1,	384000000U),
PLLVIDEO0(32,	1,	396000000U),
PLLVIDEO0(33,	1,	408000000U),
PLLVIDEO0(34,	1,	420000000U),
PLLVIDEO0(35,	1,	432000000U),
PLLVIDEO0(36,	1,	444000000U),
PLLVIDEO0(18,	0,	456000000U),
PLLVIDEO0(38,	1,	468000000U),
PLLVIDEO0(19,	0,	480000000U),
PLLVIDEO0(40,	1,	492000000U),
PLLVIDEO0(20,	0,	504000000U),
PLLVIDEO0(42,	1,	516000000U),
PLLVIDEO0(21,	0,	528000000U),
PLLVIDEO0(44,	1,	540000000U),
PLLVIDEO0(22,	0,	552000000U),
PLLVIDEO0(46,	1,	564000000U),
PLLVIDEO0(23,	0,	576000000U),
PLLVIDEO0(48,	1,	588000000U),
PLLVIDEO0(24,	0,	600000000U),
PLLVIDEO0(50,	1,	612000000U),
PLLVIDEO0(25,	0,	624000000U),
PLLVIDEO0(52,	1,	636000000U),
PLLVIDEO0(26,	0,	648000000U),
PLLVIDEO0(54,	1,	660000000U),
PLLVIDEO0(27,	0,	672000000U),
PLLVIDEO0(56,	1,	684000000U),
PLLVIDEO0(28,	0,	696000000U),
PLLVIDEO0(58,	1,	708000000U),
PLLVIDEO0(29,	0,	720000000U),
PLLVIDEO0(60,	1,	732000000U),
PLLVIDEO0(30,	0,	744000000U),
PLLVIDEO0(62,	1,	756000000U),
PLLVIDEO0(31,	0,	768000000U),
PLLVIDEO0(64,	1,	780000000U),
PLLVIDEO0(32,	0,	792000000U),
PLLVIDEO0(66,	1,	804000000U),
PLLVIDEO0(33,	0,	816000000U),
PLLVIDEO0(68,	1,	828000000U),
PLLVIDEO0(34,	0,	840000000U),
PLLVIDEO0(70,	1,	852000000U),
PLLVIDEO0(35,	0,	864000000U),
PLLVIDEO0(72,	1,	876000000U),
PLLVIDEO0(36,	0,	888000000U),
PLLVIDEO0(74,	1,	900000000U),
PLLVIDEO0(37,	0,	912000000U),
PLLVIDEO0(76,	1,	924000000U),
PLLVIDEO0(38,	0,	936000000U),
PLLVIDEO0(78,	1,	948000000U),
PLLVIDEO0(39,	0,	960000000U),
PLLVIDEO0(80,	1,	972000000U),
PLLVIDEO0(40,	0,	984000000U),
PLLVIDEO0(82,	1,	996000000U),
PLLVIDEO0(41,	0,	1008000000U),
PLLVIDEO0(84,	1,	1020000000U),
PLLVIDEO0(42,	0,	1032000000U),
PLLVIDEO0(86,	1,	1044000000U),
PLLVIDEO0(43,	0,	1056000000U),
PLLVIDEO0(88,	1,	1068000000U),
PLLVIDEO0(44,	0,	1080000000U),
PLLVIDEO0(90,	1,	1092000000U),
PLLVIDEO0(45,	0,	1104000000U),
PLLVIDEO0(92,	1,	1116000000U),
PLLVIDEO0(46,	0,	1128000000U),
PLLVIDEO0(94,	1,	1140000000U),
PLLVIDEO0(47,	0,	1152000000U),
PLLVIDEO0(96,	1,	1164000000U),
PLLVIDEO0(48,	0,	1176000000U),
PLLVIDEO0(98,	1,	1188000000U),
PLLVIDEO0(49,	0,	1200000000U),
PLLVIDEO0(100,	1,	1212000000U),
PLLVIDEO0(50,	0,	1224000000U),
PLLVIDEO0(102,	1,	1236000000U),
PLLVIDEO0(51,	0,	1248000000U),
PLLVIDEO0(104,	1,	1260000000U),
PLLVIDEO0(52,	0,	1272000000U),
PLLVIDEO0(106,	1,	1284000000U),
PLLVIDEO0(53,	0,	1296000000U),
PLLVIDEO0(108,	1,	1308000000U),
PLLVIDEO0(54,	0,	1320000000U),
PLLVIDEO0(110,	1,	1332000000U),
PLLVIDEO0(55,	0,	1344000000U),
PLLVIDEO0(112,	1,	1356000000U),
PLLVIDEO0(56,	0,	1368000000U),
PLLVIDEO0(114,	1,	1380000000U),
PLLVIDEO0(57,	0,	1392000000U),
PLLVIDEO0(116,	1,	1404000000U),
PLLVIDEO0(58,	0,	1416000000U),
PLLVIDEO0(118,	1,	1428000000U),
PLLVIDEO0(59,	0,	1440000000U),
PLLVIDEO0(120,	1,	1452000000U),
PLLVIDEO0(60,	0,	1464000000U),
PLLVIDEO0(122,	1,	1476000000U),
PLLVIDEO0(61,	0,	1488000000U),
PLLVIDEO0(124,	1,	1500000000U),
PLLVIDEO0(62,	0,	1512000000U),
PLLVIDEO0(126,	1,	1524000000U),
PLLVIDEO0(63,	0,	1536000000U),
PLLVIDEO0(128,	1,	1548000000U),
PLLVIDEO0(64,	0,	1560000000U),
PLLVIDEO0(130,	1,	1572000000U),
PLLVIDEO0(65,	0,	1584000000U),
PLLVIDEO0(132,	1,	1596000000U),
PLLVIDEO0(66,	0,	1608000000U),
PLLVIDEO0(134,	1,	1620000000U),
PLLVIDEO0(67,	0,	1632000000U),
PLLVIDEO0(136,	1,	1644000000U),
PLLVIDEO0(68,	0,	1656000000U),
PLLVIDEO0(138,	1,	1668000000U),
PLLVIDEO0(69,	0,	1680000000U),
PLLVIDEO0(140,	1,	1692000000U),
PLLVIDEO0(70,	0,	1704000000U),
PLLVIDEO0(142,	1,	1716000000U),
PLLVIDEO0(71,	0,	1728000000U),
PLLVIDEO0(144,	1,	1740000000U),
PLLVIDEO0(72,	0,	1752000000U),
PLLVIDEO0(146,	1,	1764000000U),
PLLVIDEO0(73,	0,	1776000000U),
PLLVIDEO0(148,	1,	1788000000U),
PLLVIDEO0(74,	0,	1800000000U),
PLLVIDEO0(150,	1,	1812000000U),
PLLVIDEO0(75,	0,	1824000000U),
PLLVIDEO0(152,	1,	1836000000U),
PLLVIDEO0(76,	0,	1848000000U),
PLLVIDEO0(154,	1,	1860000000U),
PLLVIDEO0(77,	0,	1872000000U),
PLLVIDEO0(156,	1,	1884000000U),
PLLVIDEO0(78,	0,	1896000000U),
PLLVIDEO0(158,	1,	1908000000U),
PLLVIDEO0(79,	0,	1920000000U),
PLLVIDEO0(160,	1,	1932000000U),
PLLVIDEO0(80,	0,	1944000000U),
PLLVIDEO0(162,	1,	1956000000U),
PLLVIDEO0(81,	0,	1968000000U),
PLLVIDEO0(164,	1,	1980000000U),
PLLVIDEO0(82,	0,	1992000000U),
PLLVIDEO0(166,	1,	2004000000U),
PLLVIDEO0(83,	0,	2016000000U),
PLLVIDEO0(168,	1,	2028000000U),
PLLVIDEO0(84,	0,	2040000000U),
PLLVIDEO0(170,	1,	2052000000U),
PLLVIDEO0(85,	0,	2064000000U),
PLLVIDEO0(172,	1,	2076000000U),
PLLVIDEO0(86,	0,	2088000000U),
PLLVIDEO0(174,	1,	2100000000U),
PLLVIDEO0(87,	0,	2112000000U),
PLLVIDEO0(176,	1,	2124000000U),
PLLVIDEO0(88,	0,	2136000000U),
PLLVIDEO0(178,	1,	2148000000U),
PLLVIDEO0(89,	0,	2160000000U),
PLLVIDEO0(180,	1,	2172000000U),
PLLVIDEO0(90,	0,	2184000000U),
PLLVIDEO0(182,	1,	2196000000U),
PLLVIDEO0(91,	0,	2208000000U),
PLLVIDEO0(184,	1,	2220000000U),
PLLVIDEO0(92,	0,	2232000000U),
PLLVIDEO0(186,	1,	2244000000U),
PLLVIDEO0(93,	0,	2256000000U),
PLLVIDEO0(188,	1,	2268000000U),
PLLVIDEO0(94,	0,	2280000000U),
PLLVIDEO0(190,	1,	2292000000U),
PLLVIDEO0(95,	0,	2304000000U),
PLLVIDEO0(192,	1,	2316000000U),
PLLVIDEO0(96,	0,	2328000000U),
PLLVIDEO0(194,	1,	2340000000U),
PLLVIDEO0(97,	0,	2352000000U),
PLLVIDEO0(196,	1,	2364000000U),
PLLVIDEO0(98,	0,	2376000000U),
PLLVIDEO0(198,	1,	2388000000U),
PLLVIDEO0(99,	0,	2400000000U),
PLLVIDEO0(200,	1,	2412000000U),
PLLVIDEO0(100,	0,	2424000000U),
PLLVIDEO0(202,	1,	2436000000U),
PLLVIDEO0(101,	0,	2448000000U),
PLLVIDEO0(204,	1,	2460000000U),
PLLVIDEO0(102,	0,	2472000000U),
PLLVIDEO0(206,	1,	2484000000U),
PLLVIDEO0(103,	0,	2496000000U),
PLLVIDEO0(208,	1,	2508000000U),
PLLVIDEO0(104,	0,	2520000000U),
};

/* PLLVE(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllve_tbl[] = {
PLLVE(24,	0,	0,	600000000U),
};

/* PLLDE(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllde_tbl[] = {
PLLDE(47,	1,	1,	288000000U),
PLLDE(48,	1,	1,	294000000U),
PLLDE(49,	1,	1,	300000000U),
PLLDE(50,	1,	1,	306000000U),
PLLDE(25,	0,	1,	312000000U),
PLLDE(52,	1,	1,	318000000U),
PLLDE(26,	0,	1,	324000000U),
PLLDE(54,	1,	1,	330000000U),
PLLDE(27,	0,	1,	336000000U),
PLLDE(56,	1,	1,	342000000U),
PLLDE(28,	0,	1,	348000000U),
PLLDE(58,	1,	1,	354000000U),
PLLDE(29,	0,	1,	360000000U),
PLLDE(60,	1,	1,	366000000U),
PLLDE(30,	0,	1,	372000000U),
PLLDE(62,	1,	1,	378000000U),
PLLDE(31,	0,	1,	384000000U),
PLLDE(64,	1,	1,	390000000U),
PLLDE(32,	0,	1,	396000000U),
PLLDE(66,	1,	1,	402000000U),
PLLDE(33,	0,	1,	408000000U),
PLLDE(68,	1,	1,	414000000U),
PLLDE(34,	0,	1,	420000000U),
PLLDE(70,	1,	1,	426000000U),
PLLDE(35,	1,	0,	432000000U),
PLLDE(72,	1,	1,	438000000U),
PLLDE(36,	0,	1,	444000000U),
PLLDE(74,	1,	1,	450000000U),
PLLDE(18,	0,	0,	456000000U),
PLLDE(76,	1,	1,	462000000U),
PLLDE(38,	0,	1,	468000000U),
PLLDE(78,	1,	1,	474000000U),
PLLDE(19,	0,	0,	480000000U),
PLLDE(80,	1,	1,	486000000U),
PLLDE(40,	0,	1,	492000000U),
PLLDE(82,	1,	1,	498000000U),
PLLDE(41,	0,	1,	504000000U),
PLLDE(84,	1,	1,	510000000U),
PLLDE(42,	0,	1,	516000000U),
PLLDE(86,	1,	1,	522000000U),
PLLDE(21,	0,	0,	528000000U),
PLLDE(88,	1,	1,	534000000U),
PLLDE(44,	0,	1,	540000000U),
PLLDE(90,	1,	1,	546000000U),
PLLDE(22,	0,	0,	552000000U),
PLLDE(92,	1,	1,	558000000U),
PLLDE(46,	0,	1,	564000000U),
PLLDE(94,	1,	1,	570000000U),
PLLDE(23,	0,	0,	576000000U),
PLLDE(96,	1,	1,	582000000U),
PLLDE(48,	0,	1,	588000000U),
PLLDE(98,	1,	1,	594000000U),
PLLDE(24,	0,	0,	600000000U),
PLLDE(100,	1,	1,	606000000U),
PLLDE(50,	0,	1,	612000000U),
PLLDE(102,	1,	1,	618000000U),
PLLDE(25,	0,	0,	624000000U),
PLLDE(104,	1,	1,	630000000U),
PLLDE(52,	0,	1,	636000000U),
PLLDE(106,	1,	1,	642000000U),
PLLDE(26,	0,	0,	648000000U),
PLLDE(108,	1,	1,	654000000U),
PLLDE(54,	0,	1,	660000000U),
PLLDE(110,	1,	1,	666000000U),
PLLDE(27,	0,	0,	672000000U),
PLLDE(112,	1,	1,	678000000U),
PLLDE(56,	0,	1,	684000000U),
PLLDE(114,	1,	1,	690000000U),
PLLDE(28,	0,	0,	696000000U),
PLLDE(116,	1,	1,	702000000U),
PLLDE(58,	0,	1,	708000000U),
PLLDE(118,	1,	1,	714000000U),
PLLDE(29,	0,	0,	720000000U),
PLLDE(120,	1,	1,	726000000U),
PLLDE(60,	0,	1,	732000000U),
PLLDE(122,	1,	1,	738000000U),
PLLDE(30,	0,	0,	744000000U),
PLLDE(124,	1,	1,	750000000U),
PLLDE(62,	0,	1,	756000000U),
PLLDE(126,	1,	1,	762000000U),
PLLDE(31,	0,	0,	768000000U),
PLLDE(128,	1,	1,	774000000U),
PLLDE(64,	0,	1,	780000000U),
PLLDE(130,	1,	1,	786000000U),
PLLDE(32,	0,	0,	792000000U),
PLLDE(132,	1,	1,	798000000U),
PLLDE(66,	0,	1,	804000000U),
};

/* PLLISE(n, d1, d2, freq)	F_N8X8_D1V1X1_D2V0X1 */
struct sunxi_clk_factor_freq factor_pllcsi_tbl[] = {
PLLCSI(24,	0,	0,	600000000U),
};


static unsigned int pllcpu_max, pllddr0_max, pllddr1_max, pllperiph0_max, pllperiph1_max,
		    pllgpu_max, pllvideo0x4_max, pllvideo1_max, pllve_max,
		    pllde_max, pllcsi_max;

#define PLL_MAX_ASSIGN(name) (pll##name##_max = \
	factor_pll##name##_tbl[ARRAY_SIZE(factor_pll##name##_tbl)-1].freq)

void sunxi_clk_factor_initlimits(void)
{
	PLL_MAX_ASSIGN(cpu);
	PLL_MAX_ASSIGN(ddr0);
	PLL_MAX_ASSIGN(ddr1);
	PLL_MAX_ASSIGN(periph0);
	PLL_MAX_ASSIGN(periph1);
	PLL_MAX_ASSIGN(gpu);
	PLL_MAX_ASSIGN(video0x4);
	PLL_MAX_ASSIGN(video1);
	PLL_MAX_ASSIGN(ve);
	PLL_MAX_ASSIGN(de);
	PLL_MAX_ASSIGN(csi);
}
